export namespace Column {
  /**
   * 列渲染类型
   */
  export type TypeProps = "img" | "text" | "strArr" | "objArr" | "arrs" | "textarea" | "boolean" | "number";

  /**
   * 固定列方向
   */
  export type FixedProps = "right" | "left" | "null";

  /**
   * 枚举配置项（用于 tag/select 等）
   */
  export interface EnumProps {
    value: string | number;
    label: string;
    color?: string;
    [key: string]: any;
  }

  /**
   * 搜索项配置
   */
  export interface SearchProps {
    show?: boolean;
    component?: string;
    defaultValue?: any;
    order?: number;
    [key: string]: any;
  }

  /**
   * 表格列配置（核心）
   */
  export interface ResColumnList {
    key: string;                  // 对应字段名
    label: string;                // 表头名称
    width?: number;               // 列宽
    renderType?: TypeProps;       // 渲染类型
    tag?: boolean;                // 是否 tag 渲染
    enum?: EnumProps[];           // 枚举映射
    isFilterEnum?: boolean;       // 是否根据 enum 映射展示
    isShow?: boolean;             // 是否显示
    fixed?: FixedProps;           // 是否固定
    sortable?: boolean;           // 是否可排序
    required?: boolean;           // 是否必填
    permission?: string | string[]; // 角色权限
    category?: string;            // 分类（业务分组）
    displayField?: string[] | string; // 多字段拼接
    search?: SearchProps;         // 搜索项
    formConfig?: FormConfig[];    // 表单配置
    [key: string]: any;           // 扩展字段
  }

  /**
   * 表单配置（配合 formConfig 字段）
   */
  export interface FormConfig {
    key?: string;
    label?: string;
    require?: boolean;
    inputType?: string;
    unit?: string;
    placeholderTemplate?: string;
  }

  /**
   * 请求列参数（用于获取列数据）
   */
  export interface ReqColumnParams {
    id?: string;
    permission?: string;
  }

  /**
   * 请求列排序参数（用于列拖拽排序）
   */
  export interface ReqColumnSortParams {
    oldId?: number;
    newId?: number;
  }
}
